<?php
class cache {
	function existe($a,$tiempo) {	
		# && filesize('cached/'.$a) > 20
		if(file_exists('cached/'.$a)) {
			/*
			if($tiempo) {
		  		$c = filectime('cached/'.$a);
		  		if(time()-$c > $tiempo) {
		  			return false;
		  		} else {
		  			return true;
		  		}
			} else {
				return true;
			}
			*/
			return true;
		} else {
			return false;
		}
	}
	function trabajar($tiempo = 60) {
		$url = $_SERVER['SCRIPT_NAME'].(($_SERVER['QUERY_STRING'])?'?'.$_SERVER['QUERY_STRING']:'');
		$md5 = md5($url);
		
		$cache = cache::existe($md5,$tiempo);
		if(!$cache) {
			$p = cache::pedir($url);
			cache::guardar($p,$md5);
		}
		ob_start('ob_gzhandler');
		include('cached/'.$md5);
		ob_end_flush();
		exit;		
	}
	function pedir($url) {		
		$q = parse_url($url);
		$q['query'] = ($q['query']) ? '?'.$q['query'].'&avoidcache=1' : '?avoidcache=1';
		$nueva = 'http://'.$_SERVER['HTTP_HOST'].implode('',$q);
		
		$a = file_get_contents($nueva);
		return $a;		
	}
	function guardar($contenido,$md5) {		
		#$contenido = str_replace(array("\n","\t"),'',$contenido);
		if(strlen($contenido) > 20) file_put_contents('cached/'.$md5,$contenido);
	}
}
?>